import*as e from"../../core/sdk/sdk.js";import*as t from"../../core/common/common.js";import*as n from"../../core/host/host.js";import*as o from"../../core/i18n/i18n.js";import*as r from"../../core/platform/platform.js";import*as s from"../../core/protocol_client/protocol_client.js";import*as i from"../../core/root/root.js";import*as a from"../../models/bindings/bindings.js";import*as l from"../../models/breakpoints/breakpoints.js";import*as c from"../../models/extensions/extensions.js";import*as d from"../../models/issues_manager/issues_manager.js";import*as g from"../../models/logs/logs.js";import*as m from"../../models/persistence/persistence.js";import*as p from"../../models/workspace/workspace.js";import*as u from"../../panels/snippets/snippets.js";import*as h from"../../panels/timeline/timeline.js";import*as f from"../../ui/components/icon_button/icon_button.js";import*as w from"../../ui/legacy/components/perf_ui/perf_ui.js";import*as S from"../../ui/legacy/components/utils/utils.js";import*as x from"../../ui/legacy/legacy.js";import*as v from"../../ui/legacy/theme_support/theme_support.js";class E{#e;#t;#n;#o;constructor(t,n){n.addFlavorChangeListener(e.RuntimeModel.ExecutionContext,this.#r,this),n.addFlavorChangeListener(e.Target.Target,this.#s,this),t.addModelListener(e.RuntimeModel.RuntimeModel,e.RuntimeModel.Events.ExecutionContextCreated,this.#i,this),t.addModelListener(e.RuntimeModel.RuntimeModel,e.RuntimeModel.Events.ExecutionContextDestroyed,this.#a,this),t.addModelListener(e.RuntimeModel.RuntimeModel,e.RuntimeModel.Events.ExecutionContextOrderChanged,this.#l,this),this.#e=t,this.#t=n,t.observeModels(e.RuntimeModel.RuntimeModel,this)}modelAdded(t){queueMicrotask(function(){this.#t.flavor(e.Target.Target)||this.#t.setFlavor(e.Target.Target,t.target())}.bind(this))}modelRemoved(t){const n=this.#t.flavor(e.RuntimeModel.ExecutionContext);n&&n.runtimeModel===t&&this.#c();const o=this.#e.models(e.RuntimeModel.RuntimeModel);this.#t.flavor(e.Target.Target)===t.target()&&o.length&&this.#t.setFlavor(e.Target.Target,o[0].target())}#r({data:t}){t&&(this.#t.setFlavor(e.Target.Target,t.target()),this.#o||(this.#n=this.#d(t)))}#d(e){return e.isDefault?e.target().name()+":"+e.frameId:""}#s({data:t}){const n=this.#t.flavor(e.RuntimeModel.ExecutionContext);if(!t||n&&n.target()===t)return;const o=t.model(e.RuntimeModel.RuntimeModel),r=o?o.executionContexts():[];if(!r.length)return;let s=null;for(let e=0;e<r.length&&!s;++e)this.#g(r[e])&&(s=r[e]);for(let e=0;e<r.length&&!s;++e)this.#m(r[e])&&(s=r[e]);this.#o=!0,this.#t.setFlavor(e.RuntimeModel.ExecutionContext,s||r[0]),this.#o=!1}#g(e){return!e.target().targetInfo()?.subtype&&(!(!this.#n||this.#n!==this.#d(e))||!this.#n&&this.#m(e))}#m(t){if(!t.isDefault||!t.frameId)return!1;if(t.target().parentTarget()?.type()===e.Target.Type.Frame)return!1;const n=t.target().model(e.ResourceTreeModel.ResourceTreeModel),o=n&&n.frameForId(t.frameId);return Boolean(o?.isOutermostFrame())}#i(e){this.#p(e.data)}#a(t){const n=t.data;this.#t.flavor(e.RuntimeModel.ExecutionContext)===n&&this.#c()}#l(e){const t=e.data.executionContexts();for(let e=0;e<t.length&&!this.#p(t[e]);e++);}#p(t){return!(this.#t.flavor(e.RuntimeModel.ExecutionContext)&&!this.#g(t))&&(this.#o=!0,this.#t.setFlavor(e.RuntimeModel.ExecutionContext,t),this.#o=!1,!0)}#c(){const t=this.#e.models(e.RuntimeModel.RuntimeModel);let n=null;for(let e=0;e<t.length&&!n;++e){const o=t[e].executionContexts();for(const e of o)if(this.#m(e)){n=e;break}}if(!n)for(let e=0;e<t.length&&!n;++e){const o=t[e].executionContexts();if(o.length){n=o[0];break}}this.#o=!0,this.#t.setFlavor(e.RuntimeModel.ExecutionContext,n),this.#o=!1}}var I=Object.freeze({__proto__:null,ExecutionContextSelector:E});const M={customizeAndControlDevtools:"Customize and control DevTools",dockSide:"Dock side",placementOfDevtoolsRelativeToThe:"Placement of DevTools relative to the page. ({PH1} to restore last position)",undockIntoSeparateWindow:"Undock into separate window",dockToBottom:"Dock to bottom",dockToRight:"Dock to right",dockToLeft:"Dock to left",focusDebuggee:"Focus debuggee",hideConsoleDrawer:"Hide console drawer",showConsoleDrawer:"Show console drawer",moreTools:"More tools",help:"Help",dockSideNaviation:"Use left and right arrow keys to navigate the options"},T=o.i18n.registerUIStrings("entrypoints/main/MainImpl.ts",M),b=o.i18n.getLocalizedString.bind(void 0,T);class R{#u;#h;#f;constructor(){R.instanceForTest=this,this.#h=new Promise((e=>{this.#f=e})),this.#w()}static time(e){n.InspectorFrontendHost.isUnderTest()||console.time(e)}static timeEnd(e){n.InspectorFrontendHost.isUnderTest()||console.timeEnd(e)}async#w(){console.timeStamp("Main._loaded"),i.Runtime.Runtime.setPlatform(n.Platform.platform());const e=await new Promise((e=>{n.InspectorFrontendHost.InspectorFrontendHostInstance.getPreferences(e)}));console.timeStamp("Main._gotPreferences"),this.#S(),this.createSettings(e),await this.requestAndRegisterLocaleData(),n.userMetrics.syncSetting(t.Settings.Settings.instance().moduleSetting("sync_preferences").get()),this.#x()}#S(){self.Common=self.Common||{},self.UI=self.UI||{},self.UI.panels=self.UI.panels||{},self.SDK=self.SDK||{},self.Bindings=self.Bindings||{},self.Persistence=self.Persistence||{},self.Workspace=self.Workspace||{},self.Extensions=self.Extensions||{},self.Host=self.Host||{},self.Host.userMetrics=self.Host.userMetrics||n.userMetrics,self.Host.UserMetrics=self.Host.UserMetrics||n.UserMetrics,self.ProtocolClient=self.ProtocolClient||{},self.ProtocolClient.test=self.ProtocolClient.test||s.InspectorBackend.test}async requestAndRegisterLocaleData(){const e=t.Settings.Settings.instance().moduleSetting("language").get(),r=o.DevToolsLocale.DevToolsLocale.instance({create:!0,data:{navigatorLanguage:navigator.language,settingLanguage:e,lookupClosestDevToolsLocale:o.i18n.lookupClosestSupportedDevToolsLocale}});n.userMetrics.language(r.locale),"en-US"!==r.locale&&await o.i18n.fetchAndRegisterLocaleData("en-US");try{await o.i18n.fetchAndRegisterLocaleData(r.locale)}catch(e){console.warn(`Unable to fetch & register locale data for '${r.locale}', falling back to 'en-US'. Cause: `,e),r.forceFallbackLocale()}}createSettings(e){this.#v();let o,r="";if(n.Platform.isCustomDevtoolsFrontend()?r="__custom__":i.Runtime.Runtime.queryParam("can_dock")||!Boolean(i.Runtime.Runtime.queryParam("debugFrontend"))||n.InspectorFrontendHost.isUnderTest()||(r="__bundled__"),!n.InspectorFrontendHost.isUnderTest()&&window.localStorage){const e={...t.Settings.NOOP_STORAGE,clear:()=>window.localStorage.clear()};o=new t.Settings.SettingsStorage(window.localStorage,e,r)}else o=new t.Settings.SettingsStorage({},t.Settings.NOOP_STORAGE,r);const s={register:e=>n.InspectorFrontendHost.InspectorFrontendHostInstance.registerPreference(e,{synced:!1}),set:n.InspectorFrontendHost.InspectorFrontendHostInstance.setPreference,get:e=>new Promise((t=>{n.InspectorFrontendHost.InspectorFrontendHostInstance.getPreference(e,t)})),remove:n.InspectorFrontendHost.InspectorFrontendHostInstance.removePreference,clear:n.InspectorFrontendHost.InspectorFrontendHostInstance.clearPreferences},a={...s,register:e=>n.InspectorFrontendHost.InspectorFrontendHostInstance.registerPreference(e,{synced:!0})},l=new t.Settings.SettingsStorage(e,a,r),c=new t.Settings.SettingsStorage(e,s,r);t.Settings.Settings.instance({forceNew:!0,syncedStorage:l,globalStorage:c,localStorage:o}),self.Common.settings=t.Settings.Settings.instance(),n.InspectorFrontendHost.isUnderTest()||(new t.Settings.VersionController).updateVersion()}#v(){i.Runtime.experiments.register("applyCustomStylesheet","Allow extensions to load custom stylesheets"),i.Runtime.experiments.register("captureNodeCreationStacks","Capture node creation stacks"),i.Runtime.experiments.register("sourcesPrettyPrint","Automatically pretty print minified sources"),i.Runtime.experiments.register("ignoreListJSFramesOnTimeline","Ignore List for JavaScript frames on Timeline",!0),i.Runtime.experiments.register("liveHeapProfile","Live heap profile",!0),i.Runtime.experiments.register("protocolMonitor","Protocol Monitor",void 0,"https://developer.chrome.com/blog/new-in-devtools-92/#protocol-monitor"),i.Runtime.experiments.register("developerResourcesView","Show developer resources view"),i.Runtime.experiments.register("cspViolationsView","Show CSP Violations view",void 0,"https://developer.chrome.com/blog/new-in-devtools-89/#csp"),i.Runtime.experiments.register("samplingHeapProfilerTimeline","Sampling heap profiler timeline",!0),i.Runtime.experiments.register("showOptionToExposeInternalsInHeapSnapshot","Show option to expose internals in heap snapshots"),i.Runtime.experiments.register("sourceOrderViewer","Source order viewer",void 0,"https://developer.chrome.com/blog/new-in-devtools-92/#source-order"),i.Runtime.experiments.register("webauthnPane","WebAuthn Pane"),i.Runtime.experiments.register("keyboardShortcutEditor","Enable keyboard shortcut editor",!1,"https://developer.chrome.com/blog/new-in-devtools-88/#keyboard-shortcuts"),i.Runtime.experiments.register("bfcacheDisplayTree","Show back/forward cache blocking reasons in the frame tree structure view"),i.Runtime.experiments.register("timelineEventInitiators","Timeline: event initiators"),i.Runtime.experiments.register("timelineInvalidationTracking","Timeline: invalidation tracking",!0),i.Runtime.experiments.register("timelineShowAllEvents","Timeline: show all events",!0),i.Runtime.experiments.register("timelineV8RuntimeCallStats","Timeline: V8 Runtime Call Stats on Timeline",!0),i.Runtime.experiments.register("timelineAsConsoleProfileResultPanel","View console.profile() results in the Performance panel for Node.js",!0),i.Runtime.experiments.register("wasmDWARFDebugging","WebAssembly Debugging: Enable DWARF support",void 0,"https://developer.chrome.com/blog/wasm-debugging-2020/"),i.Runtime.experiments.register("evaluateExpressionsWithSourceMaps","Resolve variable names in expressions using source maps",void 0),i.Runtime.experiments.register("instrumentationBreakpoints","Enable instrumentation breakpoints",!0),i.Runtime.experiments.register("setAllBreakpointsEagerly","Set all breakpoints eagerly at startup",!0),i.Runtime.experiments.register("dualScreenSupport","Emulation: Support dual screen mode",void 0,"https://developer.chrome.com/blog/new-in-devtools-89#dual-screen"),i.Runtime.experiments.setEnabled("dualScreenSupport",!0),i.Runtime.experiments.register("APCA","Enable new Advanced Perceptual Contrast Algorithm (APCA) replacing previous contrast ratio and AA/AAA guidelines",void 0,"https://developer.chrome.com/blog/new-in-devtools-89/#apca"),i.Runtime.experiments.register("fullAccessibilityTree","Enable full accessibility tree view in the Elements panel",void 0,"https://developer.chrome.com/blog/new-in-devtools-90/#accesibility-tree","https://g.co/devtools/a11y-tree-feedback"),i.Runtime.experiments.register("fontEditor","Enable new Font Editor tool within the Styles Pane.",void 0,"https://developer.chrome.com/blog/new-in-devtools-89/#font"),i.Runtime.experiments.register("contrastIssues","Enable automatic contrast issue reporting via the Issues panel",void 0,"https://developer.chrome.com/blog/new-in-devtools-90/#low-contrast"),i.Runtime.experiments.register("experimentalCookieFeatures","Enable experimental cookie features"),i.Runtime.experiments.register("cssTypeComponentLength","Enable CSS <length> authoring tool in the Styles pane",void 0,"https://developer.chrome.com/blog/new-in-devtools-96/#length","https://g.co/devtools/length-feedback"),i.Runtime.experiments.register(i.Runtime.ExperimentName.PRECISE_CHANGES,"Display more precise changes in the Changes tab"),i.Runtime.experiments.register(i.Runtime.ExperimentName.STYLES_PANE_CSS_CHANGES,"Sync CSS changes in the Styles pane"),i.Runtime.experiments.register(i.Runtime.ExperimentName.HIGHLIGHT_ERRORS_ELEMENTS_PANEL,"Highlights a violating node or attribute in the Elements panel DOM tree"),i.Runtime.experiments.register(i.Runtime.ExperimentName.HEADER_OVERRIDES,"Local overrides for response headers"),i.Runtime.experiments.register(i.Runtime.ExperimentName.EYEDROPPER_COLOR_PICKER,"Enable color picking outside the browser window"),i.Runtime.experiments.register(i.Runtime.ExperimentName.AUTHORED_DEPLOYED_GROUPING,"Group sources into Authored and Deployed trees",void 0,"https://goo.gle/authored-deployed","https://goo.gle/authored-deployed-feedback"),i.Runtime.experiments.register(i.Runtime.ExperimentName.JUST_MY_CODE,"Hide ignore-listed code in sources tree view"),i.Runtime.experiments.register(i.Runtime.ExperimentName.IMPORTANT_DOM_PROPERTIES,"Highlight important DOM properties in the Object Properties viewer"),i.Runtime.experiments.register(i.Runtime.ExperimentName.PRELOADING_STATUS_PANEL,"Enable Preloading Status Panel in Application panel",!0),i.Runtime.experiments.register(i.Runtime.ExperimentName.DISABLE_COLOR_FORMAT_SETTING,"Disable the deprecated `Color format` setting (requires reloading DevTools)",!1),i.Runtime.experiments.register(i.Runtime.ExperimentName.OUTERMOST_TARGET_SELECTOR,"Enable background page selector (e.g. for prerendering debugging)",!1),i.Runtime.experiments.enableExperimentsByDefault(["sourceOrderViewer","cssTypeComponentLength",i.Runtime.ExperimentName.PRECISE_CHANGES,..."EyeDropper"in window?[i.Runtime.ExperimentName.EYEDROPPER_COLOR_PICKER]:[],"keyboardShortcutEditor","sourcesPrettyPrint",i.Runtime.ExperimentName.DISABLE_COLOR_FORMAT_SETTING,i.Runtime.ExperimentName.TIMELINE_AS_CONSOLE_PROFILE_RESULT_PANEL,i.Runtime.ExperimentName.WASM_DWARF_DEBUGGING,i.Runtime.ExperimentName.HEADER_OVERRIDES]),i.Runtime.experiments.setNonConfigurableExperiments([..."EyeDropper"in window?[]:[i.Runtime.ExperimentName.EYEDROPPER_COLOR_PICKER]]),i.Runtime.experiments.cleanUpStaleExperiments();const e=i.Runtime.Runtime.queryParam("enabledExperiments");if(e&&i.Runtime.experiments.setServerEnabledExperiments(e.split(";")),i.Runtime.experiments.enableExperimentsTransiently(["bfcacheDisplayTree","webauthnPane","developerResourcesView"]),n.InspectorFrontendHost.isUnderTest()){const e=i.Runtime.Runtime.queryParam("test");e&&e.includes("live-line-level-heap-profile.js")&&i.Runtime.experiments.enableForTest("liveHeapProfile")}for(const e of i.Runtime.experiments.enabledExperiments())n.userMetrics.experimentEnabledAtLaunch(e.name)}async#x(){R.time("Main._createAppUI"),self.UI.viewManager=x.ViewManager.ViewManager.instance(),self.Persistence.isolatedFileSystemManager=m.IsolatedFileSystemManager.IsolatedFileSystemManager.instance();const o=t.Settings.Settings.instance().createSetting("uiTheme","systemPreferred");x.UIUtils.initializeUIUtils(document),v.ThemeSupport.hasInstance()||v.ThemeSupport.instance({forceNew:!0,setting:o}),v.ThemeSupport.instance().applyTheme(document);const r=()=>{v.ThemeSupport.instance().applyTheme(document)},s=window.matchMedia("(prefers-color-scheme: dark)"),h=window.matchMedia("(forced-colors: active)");s.addEventListener("change",r),h.addEventListener("change",r),o.addChangeListener(r),x.UIUtils.installComponentRootStyles(document.body),this.#E(document);const f=Boolean(i.Runtime.Runtime.queryParam("can_dock"));self.UI.zoomManager=x.ZoomManager.ZoomManager.instance({forceNew:!0,win:window,frontendHost:n.InspectorFrontendHost.InspectorFrontendHostInstance}),self.UI.inspectorView=x.InspectorView.InspectorView.instance(),x.ContextMenu.ContextMenu.initialize(),x.ContextMenu.ContextMenu.installHandler(document),g.NetworkLog.NetworkLog.instance(),e.FrameManager.FrameManager.instance(),g.LogManager.LogManager.instance(),d.IssuesManager.IssuesManager.instance({forceNew:!0,ensureFirst:!0,showThirdPartyIssuesSetting:d.Issue.getShowThirdPartyIssuesSetting(),hideIssueSetting:d.IssuesManager.getHideIssueByCodeSetting()}),d.ContrastCheckTrigger.ContrastCheckTrigger.instance(),self.UI.dockController=x.DockController.DockController.instance({forceNew:!0,canDock:f}),self.SDK.multitargetNetworkManager=e.NetworkManager.MultitargetNetworkManager.instance({forceNew:!0}),self.SDK.domDebuggerManager=e.DOMDebuggerModel.DOMDebuggerManager.instance({forceNew:!0}),e.TargetManager.TargetManager.instance().addEventListener(e.TargetManager.Events.SuspendStateChanged,this.#I.bind(this)),self.Workspace.fileManager=p.FileManager.FileManager.instance({forceNew:!0}),self.Workspace.workspace=p.Workspace.WorkspaceImpl.instance(),self.Bindings.networkProjectManager=a.NetworkProject.NetworkProjectManager.instance();const w=new a.ResourceMapping.ResourceMapping(e.TargetManager.TargetManager.instance(),p.Workspace.WorkspaceImpl.instance());self.Bindings.resourceMapping=w,new a.PresentationConsoleMessageHelper.PresentationConsoleMessageManager,self.Bindings.cssWorkspaceBinding=a.CSSWorkspaceBinding.CSSWorkspaceBinding.instance({forceNew:!0,resourceMapping:w,targetManager:e.TargetManager.TargetManager.instance()}),self.Bindings.debuggerWorkspaceBinding=a.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance({forceNew:!0,resourceMapping:w,targetManager:e.TargetManager.TargetManager.instance()}),e.TargetManager.TargetManager.instance().setScopeTarget(e.TargetManager.TargetManager.instance().primaryPageTarget()),x.Context.Context.instance().addFlavorChangeListener(e.Target.Target,(({data:t})=>{const n=t?.outermostTarget();e.TargetManager.TargetManager.instance().setScopeTarget(n)})),self.Bindings.breakpointManager=l.BreakpointManager.BreakpointManager.instance({forceNew:!0,workspace:p.Workspace.WorkspaceImpl.instance(),targetManager:e.TargetManager.TargetManager.instance(),debuggerWorkspaceBinding:a.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance()}),self.Extensions.extensionServer=c.ExtensionServer.ExtensionServer.instance({forceNew:!0}),new m.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding(m.IsolatedFileSystemManager.IsolatedFileSystemManager.instance(),p.Workspace.WorkspaceImpl.instance()),m.IsolatedFileSystemManager.IsolatedFileSystemManager.instance().addPlatformFileSystem("snippet://",new u.ScriptSnippetFileSystem.SnippetFileSystem),self.Persistence.persistence=m.Persistence.PersistenceImpl.instance({forceNew:!0,workspace:p.Workspace.WorkspaceImpl.instance(),breakpointManager:l.BreakpointManager.BreakpointManager.instance()}),self.Persistence.networkPersistenceManager=m.NetworkPersistenceManager.NetworkPersistenceManager.instance({forceNew:!0,workspace:p.Workspace.WorkspaceImpl.instance()}),self.Host.Platform=n.Platform,new E(e.TargetManager.TargetManager.instance(),x.Context.Context.instance()),self.Bindings.ignoreListManager=a.IgnoreListManager.IgnoreListManager.instance({forceNew:!0,debuggerWorkspaceBinding:a.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance()}),new _;const S=x.ActionRegistry.ActionRegistry.instance({forceNew:!0});self.UI.actionRegistry=S,self.UI.shortcutRegistry=x.ShortcutRegistry.ShortcutRegistry.instance({forceNew:!0,actionRegistry:S}),this.#M(),R.timeEnd("Main._createAppUI");const I=t.AppProvider.getRegisteredAppProviders()[0];if(!I)throw new Error("Unable to boot DevTools, as the appprovider is missing");await this.#T(await I.loadAppProvider())}async#T(e){R.time("Main._showAppUI");const t=e.createApp();x.DockController.DockController.instance().initialize(),t.presentUI(document);const o=x.ActionRegistry.ActionRegistry.instance().action("elements.toggle-element-search");o&&n.InspectorFrontendHost.InspectorFrontendHostInstance.events.addEventListener(n.InspectorFrontendHostAPI.Events.EnterInspectElementMode,(()=>{o.execute()}),this),n.InspectorFrontendHost.InspectorFrontendHostInstance.events.addEventListener(n.InspectorFrontendHostAPI.Events.RevealSourceLine,this.#b,this),await x.InspectorView.InspectorView.instance().createToolbars(),n.InspectorFrontendHost.InspectorFrontendHostInstance.loadCompleted();const r=i.Runtime.Runtime.queryParam("loadTimelineFromURL");null!==r&&h.TimelinePanel.LoadTimelineHandler.instance().handleQueryParam(r),x.ARIAUtils.alertElementInstance(),x.DockController.DockController.instance().announceDockLocation(),window.setTimeout(this.#R.bind(this),0),R.timeEnd("Main._showAppUI")}async#R(){R.time("Main._initializeTarget");for(const e of t.Runnable.earlyInitializationRunnables())await e().run();n.InspectorFrontendHost.InspectorFrontendHostInstance.readyForTest(),this.#f(),window.setTimeout(this.#C.bind(this),100),R.timeEnd("Main._initializeTarget")}#C(){R.time("Main._lateInitialization"),c.ExtensionServer.ExtensionServer.instance().initializeExtensions();const e=t.Runnable.lateInitializationRunnables().map((async e=>(await e()).run()));if(i.Runtime.experiments.isEnabled("liveHeapProfile")){const n="memoryLiveHeapProfile";if(t.Settings.Settings.instance().moduleSetting(n).get())e.push(w.LiveHeapProfile.LiveHeapProfile.instance().run());else{const e=async o=>{o.data&&(t.Settings.Settings.instance().moduleSetting(n).removeChangeListener(e),w.LiveHeapProfile.LiveHeapProfile.instance().run())};t.Settings.Settings.instance().moduleSetting(n).addChangeListener(e)}}this.#u=Promise.all(e).then((()=>{})),R.timeEnd("Main._lateInitialization")}lateInitDonePromiseForTest(){return this.#u}readyForTest(){return this.#h}#M(){t.Console.Console.instance().addEventListener(t.Console.Events.MessageAdded,(function({data:e}){e.show&&t.Console.Console.instance().show()}))}#b(e){const{url:n,lineNumber:o,columnNumber:r}=e.data,s=p.Workspace.WorkspaceImpl.instance().uiSourceCodeForURL(n);s?t.Revealer.reveal(s.uiLocation(o,r)):p.Workspace.WorkspaceImpl.instance().addEventListener(p.Workspace.Events.UISourceCodeAdded,(function e(s){const i=s.data;i.url()===n&&(t.Revealer.reveal(i.uiLocation(o,r)),p.Workspace.WorkspaceImpl.instance().removeEventListener(p.Workspace.Events.UISourceCodeAdded,e))}))}#k(e){e.handled||x.ShortcutRegistry.ShortcutRegistry.instance().handleShortcut(e)}#D(e){const t=new CustomEvent("clipboard-"+e.type,{bubbles:!0});t.original=e;const n=e.target&&e.target.ownerDocument,o=n?r.DOMUtilities.deepActiveElement(n):null;o&&o.dispatchEvent(t),t.handled&&e.preventDefault()}#P(e){(e.handled||e.target.classList.contains("popup-glasspane"))&&e.preventDefault()}#E(e){e.addEventListener("keydown",this.#k.bind(this),!1),e.addEventListener("beforecopy",this.#D.bind(this),!0),e.addEventListener("copy",this.#D.bind(this),!1),e.addEventListener("cut",this.#D.bind(this),!1),e.addEventListener("paste",this.#D.bind(this),!1),e.addEventListener("contextmenu",this.#P.bind(this),!0)}#I(){const t=e.TargetManager.TargetManager.instance().allTargetsSuspended();x.InspectorView.InspectorView.instance().onSuspendStateChanged(t)}static instanceForTest=null}let C,k,D,P,y;globalThis.Main=globalThis.Main||{},globalThis.Main.Main=R;class L{static instance(e={forceNew:null}){const{forceNew:t}=e;return C&&!t||(C=new L),C}handleAction(e,t){if(n.InspectorFrontendHost.InspectorFrontendHostInstance.isHostedMode())return!1;switch(t){case"main.zoom-in":return n.InspectorFrontendHost.InspectorFrontendHostInstance.zoomIn(),!0;case"main.zoom-out":return n.InspectorFrontendHost.InspectorFrontendHostInstance.zoomOut(),!0;case"main.zoom-reset":return n.InspectorFrontendHost.InspectorFrontendHostInstance.resetZoom(),!0}return!1}}class F{static instance(e={forceNew:null}){const{forceNew:t}=e;return k&&!t||(k=new F),k}handleAction(e,t){let n=x.SearchableView.SearchableView.fromElement(r.DOMUtilities.deepActiveElement(document));if(!n){const e=x.InspectorView.InspectorView.instance().currentPanelDeprecated();if(e&&e.searchableView&&(n=e.searchableView()),!n)return!1}switch(t){case"main.search-in-panel.find":return n.handleFindShortcut();case"main.search-in-panel.cancel":return n.handleCancelSearchShortcut();case"main.search-in-panel.find-next":return n.handleFindNextShortcut();case"main.search-in-panel.find-previous":return n.handleFindPreviousShortcut()}return!1}}class A{#y;constructor(){this.#y=new x.Toolbar.ToolbarMenuButton(this.#L.bind(this),!0),this.#y.element.classList.add("main-menu"),this.#y.setTitle(b(M.customizeAndControlDevtools))}static instance(e={forceNew:null}){const{forceNew:t}=e;return D&&!t||(D=new A),D}item(){return this.#y}#L(t){if(x.DockController.DockController.instance().canDock()){const e=document.createElement("div");e.classList.add("flex-centered"),e.classList.add("flex-auto"),e.classList.add("location-menu"),e.tabIndex=-1,x.ARIAUtils.setLabel(e,M.dockSide+M.dockSideNaviation);const n=e.createChild("span","dockside-title");n.textContent=b(M.dockSide);const o=x.ShortcutRegistry.ShortcutRegistry.instance().shortcutsForAction("main.toggle-dock");x.Tooltip.Tooltip.install(n,b(M.placementOfDevtoolsRelativeToThe,{PH1:o[0].title()})),e.appendChild(n);const i=new x.Toolbar.Toolbar("",e);i.makeBlueOnHover();const a=new x.Toolbar.ToolbarToggle(b(M.undockIntoSeparateWindow),"dock-window"),l=new x.Toolbar.ToolbarToggle(b(M.dockToBottom),"dock-bottom"),c=new x.Toolbar.ToolbarToggle(b(M.dockToRight),"dock-right"),d=new x.Toolbar.ToolbarToggle(b(M.dockToLeft),"dock-left");a.addEventListener(x.Toolbar.ToolbarButton.Events.MouseDown,(e=>e.data.consume())),l.addEventListener(x.Toolbar.ToolbarButton.Events.MouseDown,(e=>e.data.consume())),c.addEventListener(x.Toolbar.ToolbarButton.Events.MouseDown,(e=>e.data.consume())),d.addEventListener(x.Toolbar.ToolbarButton.Events.MouseDown,(e=>e.data.consume())),a.addEventListener(x.Toolbar.ToolbarButton.Events.Click,s.bind(null,"undocked")),l.addEventListener(x.Toolbar.ToolbarButton.Events.Click,s.bind(null,"bottom")),c.addEventListener(x.Toolbar.ToolbarButton.Events.Click,s.bind(null,"right")),d.addEventListener(x.Toolbar.ToolbarButton.Events.Click,s.bind(null,"left")),a.setToggled("undocked"===x.DockController.DockController.instance().dockSide()),l.setToggled("bottom"===x.DockController.DockController.instance().dockSide()),c.setToggled("right"===x.DockController.DockController.instance().dockSide()),d.setToggled("left"===x.DockController.DockController.instance().dockSide()),i.appendToolbarItem(a),i.appendToolbarItem(d),i.appendToolbarItem(l),i.appendToolbarItem(c),e.addEventListener("keydown",(t=>{let n=0;if("ArrowLeft"===t.key)n=-1;else{if("ArrowRight"!==t.key){if("ArrowDown"===t.key){return void e.closest(".soft-context-menu")?.dispatchEvent(new KeyboardEvent("keydown",{key:"ArrowDown"}))}return}n=1}const o=[a,d,l,c];let s=o.findIndex((e=>e.element.hasFocus()));s=r.NumberUtilities.clamp(s+n,0,o.length-1),o[s].element.focus(),t.consume(!0)})),t.headerSection().appendCustomItem(e)}const o=this.#y.element;function s(e){x.DockController.DockController.instance().once("AfterDockSideChanged").then((()=>{o.focus()})),x.DockController.DockController.instance().setDockSide(e),t.discard()}if("undocked"===x.DockController.DockController.instance().dockSide()){const n=e.TargetManager.TargetManager.instance().primaryPageTarget();n&&n.type()===e.Target.Type.Frame&&t.defaultSection().appendAction("inspector_main.focus-debuggee",b(M.focusDebuggee))}t.defaultSection().appendAction("main.toggle-drawer",x.InspectorView.InspectorView.instance().drawerVisible()?b(M.hideConsoleDrawer):b(M.showConsoleDrawer)),t.appendItemsAtLocation("mainMenu");const i=t.defaultSection().appendSubMenuItem(b(M.moreTools)),a=x.ViewManager.getRegisteredViewExtensions();a.sort(((e,t)=>{const n=e.title(),o=t.title();return n.localeCompare(o)}));for(const e of a){const t=e.location(),o=e.persistence(),r=e.title(),s=e.viewId();if("issues-pane"!==s){if("closeable"===o&&("drawer-view"===t||"panel"===t))if(e.isPreviewFeature()){const e=new f.Icon.Icon;e.data={iconName:"experiment",color:"var(--icon-default)",width:"16px",height:"16px"},i.defaultSection().appendItem(r,(()=>{x.ViewManager.ViewManager.instance().showView(s,!0,!1)}),!1,e)}else i.defaultSection().appendItem(r,(()=>{x.ViewManager.ViewManager.instance().showView(s,!0,!1)}))}else i.defaultSection().appendItem(r,(()=>{n.userMetrics.issuesPanelOpenedFrom(n.UserMetrics.IssueOpener.HamburgerMenu),x.ViewManager.ViewManager.instance().showView("issues-pane",!0)}))}t.footerSection().appendSubMenuItem(b(M.help)).appendItemsAtLocation("mainMenuHelp")}}class N{#F;constructor(){this.#F=x.Toolbar.Toolbar.createActionButtonForId("settings.show",{showLabel:!1,userActionCode:void 0})}static instance(e={forceNew:null}){const{forceNew:t}=e;return P&&!t||(P=new N),P}item(){return this.#F}}class _{constructor(){e.TargetManager.TargetManager.instance().addModelListener(e.DebuggerModel.DebuggerModel,e.DebuggerModel.Events.DebuggerPaused,this.#A,this)}#A(n){e.TargetManager.TargetManager.instance().removeModelListener(e.DebuggerModel.DebuggerModel,e.DebuggerModel.Events.DebuggerPaused,this.#A,this);const o=n.data,r=o.debuggerPausedDetails();x.Context.Context.instance().setFlavor(e.Target.Target,o.target()),t.Revealer.reveal(r)}}class H{static instance(e={forceNew:null}){const{forceNew:t}=e;return y&&!t||(y=new H),y}handleAction(e,t){return"main.debug-reload"===t&&(S.Reload.reload(),!0)}}var O=Object.freeze({__proto__:null,MainImpl:R,ZoomActionDelegate:L,SearchActionDelegate:F,MainMenuItem:A,SettingsButtonProvider:N,PauseListener:_,sendOverProtocol:function(e,t){return new Promise(((n,o)=>{const r=s.InspectorBackend.test.sendRawMessage;if(!r)return o("Unable to send message to test client");r(e,t,((e,...t)=>e?o(e):n(t)))}))},ReloadActionDelegate:H});class U{presentUI(e){const t=new x.RootView.RootView;x.InspectorView.InspectorView.instance().show(t.element),t.attachToDocument(e),t.focus()}}let B;class V{static instance(e={forceNew:null}){const{forceNew:t}=e;return B&&!t||(B=new V),B}createApp(){return new U}}var W=Object.freeze({__proto__:null,SimpleApp:U,SimpleAppProvider:V});export{I as ExecutionContextSelector,O as MainImpl,W as SimpleApp};
